home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / OWLINC.PAK / STATIC.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  6KB  |  210 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows
  3. // Copyright (c) 1991, 1997 by Borland International, All Rights Reserved
  4. //
  5. //$Revision:   10.10  $
  6. //
  7. // Definition of class TStatic, the class for static controls and base for
  8. // any control that manages simple text.
  9. //----------------------------------------------------------------------------
  10. #if !defined(OWL_STATIC_H)
  11. #define OWL_STATIC_H
  12.  
  13. #if !defined(OWL_CONTROL_H)
  14. # include <owl/control.h>
  15. #endif
  16.  
  17. #if defined(BI_NAMESPACE)
  18. namespace OWL {
  19. #endif
  20.  
  21. // Generic definitions/compiler options (eg. alignment) preceeding the 
  22. // definition of classes
  23. #include <services/preclass.h>
  24.  
  25. //
  26. // class TStatic
  27. // ~~~~~ ~~~~~~~
  28. class _OWLCLASS TStatic : public TControl {
  29.   public:
  30. #if defined(BI_PLAT_WIN32)
  31.     // For use with G\SetImage 
  32.     enum TImageType { Bitmap=IMAGE_BITMAP, Icon=IMAGE_ICON, 
  33.                       Cursor=IMAGE_CURSOR, EnhMetaFile=IMAGE_ENHMETAFILE 
  34.                     };
  35. #endif
  36.  
  37.     TStatic(TWindow*        parent,
  38.             int             id,
  39.             const char far* title,
  40.             int x, int y, int w, int h,
  41.             uint            textLen = 0,
  42.             TModule*        module = 0);
  43.  
  44.     TStatic(TWindow*   parent,
  45.             int        resourceId,
  46.             uint       textLen = 0,
  47.             TModule*   module = 0);
  48.  
  49.     // Returns the length of the control's text
  50.     //
  51.     int   GetTextLen() const;
  52.  
  53.     // Fills the given string with the text of the control.  Returns the
  54.     // number of characters copied.
  55.     // Sets the contents of the associated static text control to the given
  56.     // string
  57.     //
  58.     int   GetText(char far* str, int maxChars) const;
  59.     void  SetText(const char far* str);
  60.  
  61.     // Clears the text of the associated static text control
  62.     //
  63.     virtual void Clear();
  64.  
  65.     // Returns / sets the length limit of the control's text
  66.     //
  67.     uint  GetTextLimit() const;
  68.     void  SetTextLimit(uint textlimit);
  69.  
  70.     // Set and Get icon for Statics with the SS_ICON style
  71.     //
  72.     HICON GetIcon() const;
  73.     HICON SetIcon(HICON);
  74.  
  75.     // Override TWindow virtual member functions
  76.     //
  77.     uint  Transfer(void* buffer, TTransferDirection direction);
  78.  
  79. #if defined(BI_PLAT_WIN32)
  80.     // Set\Get image associated with static control
  81.     //
  82.     HANDLE GetImage(TImageType imageType = Bitmap) const;
  83.     HANDLE SetImage(HANDLE image, TImageType imageType = Bitmap );
  84. #endif
  85.  
  86.   protected:
  87.     // Override TWindow virtual member functions
  88.     //
  89.     char far* GetClassName();
  90.  
  91.     // Make sure that control is re-painted when resized
  92.     //
  93.     void EvSize(uint sizeType, TSize& size);
  94.  
  95.   public_data:
  96.     union {
  97. #if defined(OWL2_COMPAT)
  98.       uint  TextLen;    // obsolete name
  99. #endif
  100.       uint  TextLimit;  // Maximum length of text in edit control
  101.     };
  102.  
  103.   private:
  104.     // Hidden to prevent accidental copying or assignment
  105.     //
  106.     TStatic(const TStatic&);
  107.     TStatic& operator =(const TStatic&);
  108.  
  109.   DECLARE_STREAMABLE(_OWLCLASS, TStatic, 1);
  110.   DECLARE_RESPONSE_TABLE(TStatic);
  111. };
  112.  
  113. //
  114. // Static control notifications (Win32 only). Methods are: void Method()
  115. //
  116. // EV_STN_CLICKED(id, method)
  117. // EV_STN_DBLCLK(id, method)
  118. // EV_STN_ENABLE(id, method)
  119. // EV_STN_DISABLE(id, method)
  120. //
  121.  
  122.  
  123. // Generic definitions/compiler options (eg. alignment) following the 
  124. // definition of classes
  125. #include <services/posclass.h>
  126.  
  127. #if defined(BI_NAMESPACE)
  128. } // namespace OWL
  129. #endif
  130.  
  131. //----------------------------------------------------------------------------
  132. // Inline implementations
  133. //
  134.  
  135. //
  136. // Return the handle of the icon used for this static control.
  137. //
  138. inline HICON TStatic::GetIcon() const {
  139.   PRECONDITION(GetHandle());
  140.   return (HICON)CONST_CAST(TStatic*,this)->SendMessage(STM_GETICON);
  141. }
  142.  
  143. //
  144. // Set the handle of the icon.
  145. //
  146. inline HICON TStatic::SetIcon(HICON icon) {
  147.   PRECONDITION(GetHandle());
  148.   return (HICON)SendMessage(STM_SETICON, TParam1(icon));
  149. }
  150.  
  151. #if defined(BI_PLAT_WIN32)
  152. //
  153. // Return handle of image used for static control
  154. //
  155. inline HANDLE TStatic::GetImage(TImageType imageType) const
  156. {
  157.   PRECONDITION(GetHandle());
  158.   return (HANDLE)CONST_CAST(TStatic*,this)->SendMessage(STM_GETIMAGE,(TParam2)imageType);
  159. }
  160.  
  161. //
  162. // Set handle of image.
  163. //
  164. inline HANDLE TStatic::SetImage(HANDLE image, TImageType imageType)
  165. {
  166.   PRECONDITION(GetHandle());
  167.   return (HANDLE)SendMessage(STM_SETIMAGE, (TParam1)imageType, (TParam2)image);
  168. }
  169. #endif
  170.  
  171. //
  172. // Return the current length of the text in the control.
  173. //
  174. inline int TStatic::GetTextLen() const {
  175.   PRECONDITION(GetHandle());
  176.   return ::GetWindowTextLength(GetHandle());
  177. }
  178.  
  179. //
  180. // Retrieve the current text in the control.
  181. //
  182. inline int TStatic::GetText(char far* str, int maxChars) const {
  183.   PRECONDITION(GetHandle());
  184.   return ::GetWindowText(GetHandle(), str, maxChars);
  185. }
  186.  
  187. //
  188. // Set the text in the control.
  189. //
  190. inline void TStatic::SetText(const char far* str) {
  191.   PRECONDITION(GetHandle());
  192.   ::SetWindowText(GetHandle(), str);
  193. }
  194.  
  195. //
  196. // Return the maximum number of characters that can be displayed in the control.
  197. //
  198. inline uint TStatic::GetTextLimit() const {
  199.   return TextLimit;
  200. }
  201.  
  202. //
  203. // Set the maximum number of characters to display in the control.
  204. //
  205. inline void TStatic::SetTextLimit(uint textlimit) {
  206.   TextLimit = textlimit;
  207. }
  208.  
  209. #endif  // OWL_STATIC_H
  210.